# 1. 使用更小的 slim 基础镜像
FROM python:3.9.23-slim-bookworm

# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1


# 2. 创建一个非 root 用户来运行应用
# Cron需要以root身份运行，但我们会配置它以'appuser'身份执行我们的任务
RUN groupadd --gid 1001 appuser && \
    useradd --uid 1001 --gid 1001 -m -s /bin/bash appuser

# 3. 安装 Cron
COPY ./sources.list /etc/apt/
RUN apt-get update && \
    apt-get -y install cron && \
    rm -rf /var/lib/apt/lists/*

# 4. 复制 crontab 文件并设置权限
COPY spider-cron /etc/cron.d/spider-cron
RUN chmod 0644 /etc/cron.d/spider-cron

# 5. 设置工作目录
WORKDIR /app

# 6. 优化缓存：先复制依赖文件并安装
COPY --chown=appuser:appuser requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装 Playwright 依赖和指定的浏览器
RUN python -m playwright install --with-deps chromium

# 7. 复制应用代码
COPY --chown=appuser:appuser . .
 
# 8. 将 cron 作为主进程启动
# cron 会在后台运行，并根据 /etc/cron.d/spider-cron 的配置定时执行任务
CMD ["cron", "-f"]